package com.ipercube.model;

import com.ipercube.Dimension;
import java.util.List;

/**
 *  <p style="margin-top: 0">
 *    a DimensionHierarchy is an ordered dimension list by levels. DimensionHierarchy levels are
 *    sequential, and one level could have more than one dimension.
 *      </p>
 */
// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.019EFB76-00A9-9474-3567-5A037B7936A0]
// </editor-fold> 
public interface DimensionHierarchy {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.670ADC35-322B-58C0-9C73-F66130D5C640]
    // </editor-fold> 
    public void add (Dimension d, int level);

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.BA4446E8-8E74-423C-8A4D-54A5EB306CE5]
    // </editor-fold> 
    public void add (Dimension d);

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.308A6A98-2021-9674-AF38-0EFF619A6ED3]
    // </editor-fold> 
    public int getMaxLevel ();

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.7D99E2BE-8A6E-FBF7-A0E1-C7D3A812AC8B]
    // </editor-fold> 
    public List<Dimension> getAllDimensions ();

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.754015F8-EAAA-CB3A-0803-F8B48EC9CFC1]
    // </editor-fold> 
    public void remove (Dimension d);

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.03C3994B-D7B5-759B-AD3B-57EBA00C9E5A]
    // </editor-fold> 
    public void removeLevel (int level);

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.426ADFE5-C314-83AE-E885-9CD2B99D54E6]
    // </editor-fold> 
    public Dimension getById (String id);

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.8CBE3752-895B-6882-4817-ACE9C3DD0681]
    // </editor-fold> 
    public int getLevel (Dimension d);

    public Dimension getDimension(int level);

}

